<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title> new document </title>
  <meta name="generator" content="editplus" />
  <meta name="author" content="" />
  <meta name="keywords" content="" />
  <meta name="description" content="" />
 </head>

 <body><pre>

1. 로그인 및 DB세션 처리
    클래스 : Authentication
    데이터베이스 : tbl_members, tbl_dbsessions

    OK >> 페이지가 넘어간 후 hook에서 사용자/관리자 별로 권한 처리 할것.
    OK >> dt_join_time >> dt_joined, tm_joined 리팩토링
    OK >> dt_last_signin_time >> dt_last_logined, tm_last_logined 테이블 리팩토링.
    OK >> dt_last_logined, tm_last_logined 업데이트 처리.
    OK >> 로그아웃 처리 ajax , db세션 없애주기.
    OK >> 로그인 처리 ajax 3중 암호화

2. 기존 devViewTest 리팩토링.
    OK >> devCrudSample로 이름 바꾸고 동작 하게 바꾸기.

------------------------------------------------------------------------

2. 멤버 가입
    클래스 : Members
    데이터베이스 : tbl_members
    용도 : 사용자/관리자를 등록 할 수 있는 LIST, CRUD

    OK >> 가입일시 등록 로직 추가.
    OK >> CUD 관리자/사용자 구분 필드 추가.
    OK >> LIST 권한타입(관리자/사용자)정렬
    OK >> 남성/여성별 정렬
    OK >> 가입일시별 정렬
    OK >> 마지막로그인별 정렬
    OK >> 이용약관 동의별 정렬
    OK >> 개인보호 정책 동의별 정렬
    OK >> 검색 UI SELECT박스 > 최적화 Nhtml
    OK >> CI_Controller 컨트롤러들 N_Controller 상속
    OK >> CI_Model 다른 모델들 N_Model 상속
    OK >> tbl_enum >> 테이블에서 조회하여 처리 enum의 값과 코드를 별도의 테이블로 분리

------------------------------------------------------------------------------------
3. 로그인
    OK >> 로그인시 마지막 로그인 디비에  추가. (최종 로그인 업데이트되게)

------------------------------------------------------------------------------------
4. source 리팩토링
    OK >> 공통 글로벌모델 작성
    OK >> 모델 쿼리 테이블 네임 sprint 화
           e.g) $this->tableName = 'tbl_members'; INSERT INTO %1$s SET %2$s;', $this->tableName,
    OK >> delete 관련 밸리데이션 추가.
    ok >> localsidebar db로 데이터/알고리즘 분리.
    OK >> 리스트에서 기존 tr td로 태그를 직접 뿌리던 문제를 json으로 변경. json을 tr,td로 만들어주는 함수 작성.
-----------------------------------------------------------------------------------------
5. 캐릭터
    클래스 : Characters
    데이터베이스 : tbl_characters
    OK >> 캐릭터 R, LIST
    OK >> U : 캐릭터 이름을 수정 할 수 있다.
    OK >> 멤버에 연결 해주는 인터페이스 fk_members_pk로 연결된다. (조회)
    OK >> C : 생성은 이름만 나머지 정보는 기본 값으로 정한다. (기본값은 차후에 DB가 될 수 있음)
    OK >> D : 데이터를 물리적으로 삭제시 여러 연관 테이블에 문제가 생길 수 있으므로 flag를 추가한다. isLive enum('y','n') n일경우 사용을 못하는 형태.

6. 소스 리팩토링 공통사항 추가.
    OK >> unique 컬럼 체크 함수.
    OK >> DB에 unique 설정하기.
-----------------------------------------------------------------------------------------

7. 입수금
    클래스 : Money
    데이터베이스 : tbl_item_money
    OK >> money를 특정 캐릭터에게 줄 수(뺏을 수) 있는 인터페이스
    OK >> 특정 캐릭터가 money를 조회하는 목록/합계 내용. 등변차변 형태가 아닌 증가,증감만 기록.

    돈의 경우 상세 정책
        캐릭터가 가진돈은 "입수금"이다. 플레이어가 가진 돈은 "소지금 혹은 예금" 이다.
        캐릭터가 돈을 입수/잃어버리게 되면 tbl_item_money_characters에 삽입 된다.
        만약 캐릭터가 사망하게되면 fg_flow가 lose로 바뀐다.
        캐릭터가 basecamp에 들어가서 basecamp에 정산하게 되면 해당 fk_characters_uid로 되어있는 항목을 모두 삭제한다.
        tbl_item_money_members에 fk_members_uid에 해당하는 no_money에 플러스 한다.
        일반적인 상점에서 아이템 거래시 tbl_item_money_members에서 증가/증감 된다.
        요약하자면 돈은 플레이어만 쓰고 캐릭터는 벌어오기만 함

    UI의 구성
        OK >> Money (캐릭터)
            주 target은 캐릭터 이다.
            캐릭터별로 입수금을 모두 나열한다. L,CRUD가 있는 상황이다.
            LIST에 [무슨무슨캐릭터]가 [무슨무슨플레이어]에게 정산하기 버튼을 둔다.
            해당 정산 버튼을 누르면 ajax로 처리되고 list가 업데이트 된다.
            사용자 ui에서는 세션별로 구분해서 보여주는 where문이 들어가면 끝.

        OK >> DepositMoney (멤버)
            주타겟인 모든 플레이어의 소지금을 전체 나열한다. L,CRUD가 있는 상황이다.
            실 서비스에서는 base캠프에만 기록될 것이다. 즉 이화면은 관리자 용이다.-_-;

    캐릭터가 입수한 돈을 플레이어게 예금하는(?) 로직
        1. 캐릭터의 돈을 가져온다
            (sum(fg_flow=gain)-sum(fg_flow=lose)) < 0 ? (sum(fg_flow=gain)-sum(fg_flow=lose)) : 0 공식
        2. 멤버의 돈을 가져온다.
            그냥 ID 기준으로 셀렉트
        4. 1번항목과 2번 항목을 더함. 멤버 테이블에 업데이트
        5. 캐릭터의 돈 gain, lose 모두 물리적으로 삭제.
        6. 5번 항목과 4번 항목의 순서를 바꾸는 것을 고려 해본다.

8. 소스 리팩토링
    OK >> nSearchBarBType 추가

-----------------------------------------------------------------------------------------

9. 소스 리팩토링
    OK >> $controller의 nHeader변수화.
    OK >> 테이블 colgroup 너비 조정
    OK >> 모델에 %1$s 헷갈림 없애자.

-----------------------------------------------------------------------------------------



10 경험치
    클래스 Experience
    데이터베이스 : tbl_characters_experience_point
    >> 경험치를 특정 캐릭터에게 줄 수(뺏을 수) 있는 인터페이스
    OK >> 특정 캐릭터가 경험치를 조회하는 목록/합계 내용. 증가, 증감.

    경험치의 경우 상세 정책
        캐릭터가 가진 경험치는 "경험치"이다.
        플레이어가 가진 경험치는 "배분가능한 경험치" 이다.
        캐릭터가 경험치를 입수하게 되면 tbl_members.no_experience_point에 삽입된다. (즉 플레이어에게 삽입되게 된다.)
        만약 캐릭터가 사망하게되면 퍼센테이지 형태로 계산되어(올림) tbl_characters.no_experience_point에서 증감/차감 된다.
        캐릭터가 basecamp에 들어가면 tbl_members.no_experience_point 에 쌓여있는 항목을 해당 캐릭터에게 줄 수 있다.
        즉 사망시에는 퍼센테이지 단위로 캐릭터의 경험치가 차감되고,
        입수한 경험치는 플레이어가 소유한 캐릭터에게 배분 해줄 수 있다.
        즉, 상향 평준화는 플레이어게 맡겨진다.
        요약 하자면 경험치 자체를 사냥해서 벌어올때 캐릭터가 성장하진 않고 아이템 식으로 들고만 있다가 베이스캠프에 와서(마을에와서 은행에 넣어서-_-;;)
        플레이어가 가진 캐릭터 다수중 하나에게 배분하는 형태

    UI의 구성
        ExperiencePoint(플레이어) 화면만 둔다.
            주 타겟인 플레이어 별로 입수된 경험치를 모두 나열한다. L, U를 제작한다.
            U는 실제 관리자만 쓸 수 있는 기능이다( 차후 '전투' 구현에 있어서 TDD, 이벤트 경험치 지급에 쓰이게 될 것이다. )
            LIST에 [무슨무슨플레이어]가 [무슨무슨캐릭터]에게 경험치 주기 바로가기 버튼을 둔다.
            타 플레이어가 타 플레이어의 캐릭터를 밀어 줄수 도 있겠다.

    관련 로직
        멤버를 생성할때 experience_point 테이블에 insert해준다.
    관련 로직 -
        1 배분 가능한 경험치를 표기한다.
        2 넘버를 입력한다.
        3 캐릭터를 선택한다.
        4 OK 버튼을 누른다.
        5 배분 가능한 경험치 테이블에서 값을 부른다.
            부른 값이 입력한 값보다 작으면 부른값이 된다.
            부른 값 - 입력한 값 >> 하여 업데이트
        6 해당 캐릭터 경험치 값을 부른다.
            부른값 + 입력한 값 >> 하여 업데이트

-----------------------------------------------------------------------------------------

아이템
    클래스 : Item
    데이터베이스 : tbl_item, tbl_item_category
    >> 아이템 목록 조회 및 등록 할 수 있는 L,CRUD
    >> 카테고리를 등록 할 수 있는 CRUD

인벤토리
    클래스 : Inventory
    데이터 베이스 : tbl_inventory
    >> 인벤토리 LIST CRUD.
    >> 특정 캐릭터에 아이템을 조회 하여 인벤토리에 넣어/빼는주는 기능

아이템 2차
    >> 아이템을 '어빌리티'형태로 정리 (.. 아직 감이안옴)
    >> 인벤토리의 물품을 '장비' 하거나 '사용' 하는 기능

-------------------------------------------------------------------------------------------------------------------------------
작업중 DB현황

    # tbl_a_developer_sample           InnoDB       10  Compact         48             341        16384                0             0          0              66  2014-08-18 10:30:24  (NULL)       (NULL)      utf8_general_ci    (NULL)                  select_field02
    # tbl_characters                   InnoDB       10  Compact          3            5461        16384                0         65536          0               5  2014-08-19 13:04:52  (NULL)       (NULL)      utf8_general_ci    (NULL)
    # tbl_dbsessions                   InnoDB       10  Compact          1           16384        16384                0         16384          0          (NULL)  2014-08-18 09:55:25  (NULL)       (NULL)      utf8_general_ci    (NULL)
    # tbl_enum                         InnoDB       10  Compact          9            1820        16384                0             0          0          (NULL)  2014-08-22 15:43:57  (NULL)       (NULL)      utf8_general_ci    (NULL)
    # tbl_item_money                   InnoDB       10  Compact          3            5461        16384                0             0          0               4  2014-08-18 10:31:08  (NULL)       (NULL)      utf8_general_ci    (NULL)
    # tbl_members                      InnoDB       10  Compact         29             564        16384                0         16384          0              34  2014-08-19 17:10:46  (NULL)       (NULL)      utf8_general_ci    (NULL)
      tbl_characters_experience_point  InnoDB       10  Compact         15            1092        16384                0             0          0              16  2014-08-18 10:31:01  (NULL)       (NULL)      utf8_general_ci    (NULL)

      tbl_inventory                    InnoDB       10  Compact         15            1092        16384                0         32768          0              17  2014-08-18 09:55:26  (NULL)       (NULL)      utf8_general_ci    (NULL)
      tbl_item                         InnoDB       10  Compact         33             496        16384                0         32768          0              34  2014-08-18 10:31:05  (NULL)       (NULL)      utf8_general_ci    (NULL)
      tbl_item_ability_armor           InnoDB       10  Compact          5            3276        16384                0             0          0               6  2014-08-18 10:31:05  (NULL)       (NULL)      utf8_general_ci    (NULL)
      tbl_item_ability_healing         InnoDB       10  Compact         22             744        16384                0             0          0              23  2014-08-18 10:31:06  (NULL)       (NULL)      utf8_general_ci    (NULL)
      tbl_item_ability_weapon          InnoDB       10  Compact          4            4096        16384                0             0          0               5  2014-08-18 10:31:06  (NULL)       (NULL)      utf8_general_ci    (NULL)
      tbl_item_category                InnoDB       10  Compact          4            4096        16384                0             0          0             100  2014-08-18 10:31:07  (NULL)       (NULL)      utf8_general_ci    (NULL)
      tbl_enemy                        InnoDB       10  Compact          3            5461        16384                0             0          0               4  2014-08-18 09:55:25  (NULL)       (NULL)      utf8_general_ci    (NULL)


</pre> </body>
</html>
